package cn.biao.epic.sys.modular.system.mapper;

import cn.biao.epic.sys.modular.system.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

/**
 * @Auther Uncle_Z
 * @date 2019/12/5 11:49
 * @Email:2545375@qq.com
 * @Descrition
 */
public interface UserMapper extends BaseMapper<User> {

    /**
     *
     * 修改用户文档
     *
     * @author uncle_z
     * @Date 2019/12/5 17:48
     * @Param [userId, status]
     * @File UserMapper.java
     */
    int setState(@Param("userId") Long userId, @Param("status") String status);

    /**
     *
     * 修改用户密码
     *
     * @author uncle_z
     * @Date 2019/12/5 17:51
     * @Param [userId, pwd]
     * @File UserMapper.java
     */
    int changePwd(@Param("userId") Long userId, @Param("pwd") String pwd);

    /**
     *
     * 通过帐号查询用户
     *
     * @author uncle_z
     * @Date 2019/12/5 17:53
     * @Param [account]
     * @File UserMapper.java
     */
    User selectByAccount(@Param("account") String account);

    /**
     * 
     * 设置用户角色
     *
     * @author uncle_z
     * @Date 2019/12/6 11:16
     * @Param [userId, roleIds]
     * @File UserMapper.java 
     */
    int setRoles(@Param("userId") Long userId, @Param("roleIds") String roleIds);

    /**
     *
     * 根据条件查询用户列表
     *
     * @author uncle_z
     * @Date 2019/12/6 11:22
     * @Param [page, name, beginTime, endTime]
     * @File UserMapper.java
     */
    Page<Map<String,Object>> selectUsers(@Param("page") Page page,
                                         @Param("name") String name,
                                         @Param("beginTime") String beginTime,
                                         @Param("endTime") String endTime);

    /**
     * 
     * 根据条件查询用户列表（根据角色）
     *
     * @author uncle_z
     * @Date 2019/12/6 11:40
     * @Param [page, name, beginTime, endTime, roleId]
     * @File UserMapper.java 
     */
    Page<Map<String,Object>> selectUsersByRole(@Param("page") Page page,
                                               @Param("name") String name,
                                               @Param("beginTime") String beginTime,
                                               @Param("endTime") String endTime,
                                               @Param("roleId") String roleId);
}
